package user;

import book.BookList;
import ioperations.Ioperation;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-01
 * Time: 22:51
 */
public abstract class User {
    //把公共属性抽取出来
    protected String name;
    //此时这个接口数组 没有初始化
    public Ioperation[] ioperations;

    /**@param name
     * 接口的出现就是为了 继承 让其的操作图书系统的方法 进行 重写
     * 这个接口数组使得用户与操作方法 串联在一起
     */
    //写这个是为了 用子类当中的构造方法 初始化 父类中的 成员
    public User(String name) {
        this.name = name;
    }
    //菜单：
    public abstract int menu();

    //操作图书系统:
    public void doIoperation(int choice, BookList bookList) {
        //1.ioperations[choice]:数组的索引，找到对应的操作类
        //2. work(bookList);就调用该类中的work方法
        ioperations[choice].work(bookList);
    }
}
